home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 43
/
Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso
/
Aminet
/
game
/
demo
/
Mattonite_Src.lha
/
MattoniteEditorSuDisco.AMOS
/
MattoniteEditorSuDisco.amosSourceCode
< prev
next >
Wrap
AMOS Source Code
|
2001-02-19
|
15KB
|
500 lines
'-> Mattonite Editor by Stefano Regattin
'i> 13 ottobre 1996
'm> 14,16,17,18,19,20,25,26,30 ottobre 1996
'm> 3 luglio 1997
'm> 12 novembre 1997
'm> 10,18 dicembre 1997
'm> 15 febbraio 1998
'm> 19,20,21,22,24,30 maggio 2000
'm> 17 luglio 2000
'm> 6 dicembre 2000
'm> 19 febbraio 2001
'--------------------
OGGETTI$="MattoniteOggetti.Abk"
BANCO=65535
POSIZIONELINEAMAGGIORE=255
POSIZIONELINEAMINORE=0
Dim MATTONCINO(246),X0ZONA(246),Y0ZONA(246)
Global FILE$,LIVELLO$,NOMEFILE$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
Global PERCORSODEILIVELLIDELDISCODELGIOCO$,PERCORSODEGLIOGGETTI$
Global BANCO,BLULINEAMINORE,BONUS,C0LORELINEAMAGGIORE,C0LORELINEAMINORE
Global CONVERSIONERIUSCITA,LINEAMAGGIORE
Global LIVELLO,LINEE,POSIZIONELINEAMAGGIORE,POSIZIONELINEAMINORE
Global RAGIONEDELROSSO#,RAGIONEDELVERDE#,RAGIONEDELBLU#
Global ROSSOLINEAMINORE,VERDELINEAMINORE
Global MATTONCINO(),X0ZONA(),Y0ZONA()
Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
Proc IMPOSTAIPERCORSIDEIFILE
Proc IMPOSTALOSCHERMO
Proc IMPOSTALARCOBALENO
Proc IMPOSTAILAMPEGGI
Proc CARICAGLIOGGETTI
Proc IMPOSTAICOLORI
Proc IMPOSTALEZONEDEIMATTONCINI
Proc IMPOSTALABARRADISCORRIMENTO
Proc MOSTRALEZONE
Proc MOSTRALALINEAATTIVA
LINEAMAGGIORE=True
Proc MOSTRALALINEAATTIVA
Ink 62 : Bar 20,209 To 29,218
Ink 61 : Polyline 20,217 To 20,209 To 28,209
Polyline 24,211 To 22,213 To 22,214 To 24,216
Ink 63 : Polyline 21,218 To 29,218 To 29,210
Polyline 27,211 To 25,213 To 25,214 To 27,216
Set Zone 248,20,209 To 29,218
Get Icon 1,20,209 To 29+1,218+1
Ink 62 : Bar 30,209 To 39,218
Ink 61 : Polyline 30,217 To 30,209 To 38,209
Polyline 32,211 To 34,213 To 34,214 To 32,216
Ink 63 : Polyline 31,218 To 39,218 To 39,210
Polyline 35,211 To 37,213 To 37,214 To 35,216
Set Zone 249,30,209 To 39,218
Get Icon 2,30,209 To 39+1,218+1
Set Zone 250,233,209 To 264,223
Set Zone 251,233,225 To 264,239
Set Zone 252,233,241 To 264,255
Set Zone 253,273,0 To 319,255
Proc MOSTRAILLIVELLO
Paste Icon 64,209,1
Set Zone 254,64,209 To 73,218
Paste Icon 74,209,2
Set Zone 255,74,209 To 83,218
Proc MOSTRAILBONUS
Paste Icon 140,209,1
Set Zone 256,140,209 To 149,218
Paste Icon 150,209,2
Set Zone 257,150,209 To 159,218
Set Zone 258,0,248 To 31,255 : Rem Load
Set Zone 259,40,248 To 71,255 : Rem Save
Set Zone 260,80,248 To 159,255 : Rem Line
Set Zone 261,0,240 To 55,247 : Rem Rainbow
Set Zone 262,56,240 To 71,247 : Rem Arrow up
Set Zone 263,72,240 To 87,247 : Rem Arrow down
Set Zone 264,160,209 To 191,216 : Rem Quit
Ink 29,32 : Text 160,216,"Quit"
Limit Mouse
Paste Bob 0,209,83
MATTONCINO=1
Do
XTOPO=X Screen(X Mouse)
YTOPO=Y Screen(Y Mouse)
TASTODELTOPOCLICCATO=Mouse Click
TASTODELTOPOPREMUTO=Mouse Key
ZONATOPO=Mouse Zone
If TASTODELTOPOPREMUTO=1
If ZONATOPO>0 and ZONATOPO<248
If MATTONCINO=0
Ink 0 : Bar X0ZONA(ZONATOPO-1),Y0ZONA(ZONATOPO-1) To X0ZONA(ZONATOPO-1)+19,Y0ZONA(ZONATOPO-1)+9
Else
Paste Bob X0ZONA(ZONATOPO-1),Y0ZONA(ZONATOPO-1),MATTONCINO+82
End If
MATTONCINO(ZONATOPO-1)=MATTONCINO
Else If ZONATOPO>249 and ZONATOPO<253
If LINEAMAGGIORE=True
ROSSO=C0LORELINEAMAGGIORE/256
VERDE=C0LORELINEAMAGGIORE/16 mod 16
BLU=C0LORELINEAMAGGIORE mod 16
Else
ROSSO=C0LORELINEAMINORE/256
VERDE=C0LORELINEAMINORE/16 mod 16
BLU=C0LORELINEAMINORE mod 16
End If
If ZONATOPO=250
ROSSO=(XTOPO-233)/2
Hslider 233,209 To 264,223,16,ROSSO,1
Ink 0 : Bar 217,216 To 232,223
ROSSO$=Str$(ROSSO)-" " : Ink 29,32 : Text 233-Len(ROSSO$)*8,222,ROSSO$
Else If ZONATOPO=251
VERDE=(XTOPO-233)/2
Hslider 233,225 To 264,239,16,VERDE,1
Ink 0 : Bar 217,232 To 232,239
VERDE$=Str$(VERDE)-" " : Ink 29,32 : Text 233-Len(VERDE$)*8,238,VERDE$
Else If ZONATOPO=252
BLU=(XTOPO-233)/2
Hslider 233,241 To 264,255,16,BLU,1
Ink 0 : Bar 217,248 To 232,255
BLU$=Str$(BLU)-" " : Ink 29,32 : Text 233-Len(BLU$)*8,254,BLU$
End If
C0LORE=ROSSO*256+VERDE*16+BLU
Colour 1,C0LORE
If LINEAMAGGIORE=True
C0LORELINEAMAGGIORE=C0LORE
Rain(0,POSIZIONELINEAMAGGIORE)=C0LORELINEAMAGGIORE
Else
C0LORELINEAMINORE=C0LORE
Rain(0,POSIZIONELINEAMINORE)=C0LORELINEAMINORE
End If
Rainbow 0,257,0,271
Else If ZONATOPO=253
If YTOPO>POSIZIONELINEAMINORE
Ink 0 : Draw 273,POSIZIONELINEAMAGGIORE To 319,POSIZIONELINEAMAGGIORE
POSIZIONELINEAMAGGIORE=YTOPO
LINEAMAGGIORE=True
Proc MOSTRALALINEAATTIVA
End If
Else If ZONATOPO=258
Inverse On : Print At(0,31);"Load"; : Inverse Off
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Rainbow 0,257,0,271
Proc MOSTRAIMATTONCINI
Proc MOSTRAILBONUS
Proc MOSTRALEZONE
Proc MOSTRALALINEAATTIVA
LINEAMAGGIORE= Not LINEAMAGGIORE
Proc MOSTRALALINEAATTIVA
Else If ZONATOPO=259
Inverse On : Print At(5,31);"Save"; : Inverse Off
Proc DAVARIABILIABANCO
Proc SALVAILLIVELLO
Proc MOSTRALEZONE
Proc MOSTRALALINEAATTIVA
End If
Else If TASTODELTOPOPREMUTO=2
If ZONATOPO=253
If YTOPO<POSIZIONELINEAMAGGIORE
Ink 0 : Draw 273,POSIZIONELINEAMINORE To 319,POSIZIONELINEAMINORE
POSIZIONELINEAMINORE=YTOPO
LINEAMAGGIORE=False
Proc MOSTRALALINEAATTIVA
End If
Else If ZONATOPO=254
Add LIVELLO,-1,0 To 999
Proc MOSTRAILLIVELLO
Else If ZONATOPO=255
Add LIVELLO,1,0 To 999
Proc MOSTRAILLIVELLO
Else If ZONATOPO=256
Add BONUS,-1,0 To 9999999
Proc MOSTRAILBONUS
Else If ZONATOPO=257
Add BONUS,1,0 To 9999999
Proc MOSTRAILBONUS
End If
End If
If TASTODELTOPOCLICCATO=1
If ZONATOPO=248
Add MATTONCINO,-1,0 To 33
If MATTONCINO=0
Ink 0 : Bar 0,209 To 19,218 : Ink 29 : Box 0,209 To 19,218
Else
Paste Bob 0,209,82+MATTONCINO
End If
Else If ZONATOPO=249
Add MATTONCINO,1,0 To 33
If MATTONCINO=0
Ink 0 : Bar 0,209 To 19,218 : Ink 29 : Box 0,209 To 19,218
Else
Paste Bob 0,209,82+MATTONCINO
End If
Else If ZONATOPO=254
Add LIVELLO,-1,0 To 999
Proc MOSTRAILLIVELLO
Else If ZONATOPO=255
Add LIVELLO,1,0 To 999
Proc MOSTRAILLIVELLO
Else If ZONATOPO=256
Add BONUS,-1,0 To 9999999
Proc MOSTRAILBONUS
Else If ZONATOPO=257
Add BONUS,1,0 To 9999999
Proc MOSTRAILBONUS
Else If ZONATOPO=260
LINEAMAGGIORE= Not LINEAMAGGIORE
Proc MOSTRALALINEAATTIVA
Else If ZONATOPO=261
Inverse On : Print At(0,30);"Rainbow"; : Inverse Off
LINEE=POSIZIONELINEAMAGGIORE-POSIZIONELINEAMINORE+1
If LINEE>2
Proc CALCOLALARAGIONEDELROSSODELVERDEEDELBLU
Proc PROGRESSIONECOLORI
Else
Bell 1
End If
Proc MOSTRALEZONE
Proc MOSTRALALINEAATTIVA
Else If ZONATOPO=262
Inverse On : Print At(7,30);Chr$(147);Chr$(148); : Inverse Off
If LINEAMAGGIORE=True
If POSIZIONELINEAMAGGIORE>0 and POSIZIONELINEAMAGGIORE>POSIZIONELINEAMINORE+1
Ink 0 : Draw 273,POSIZIONELINEAMAGGIORE To 319,POSIZIONELINEAMAGGIORE
Dec POSIZIONELINEAMAGGIORE
Wait 5
End If
Else
If POSIZIONELINEAMINORE>0
Ink 0 : Draw 273,POSIZIONELINEAMINORE To 319,POSIZIONELINEAMINORE
Dec POSIZIONELINEAMINORE
Wait 5
End If
End If
Proc MOSTRALEZONE
Proc MOSTRALALINEAATTIVA
Else If ZONATOPO=263
Inverse On : Print At(9,30);Chr$(149);Chr$(150); : Inverse Off
If LINEAMAGGIORE=True
If POSIZIONELINEAMAGGIORE<255
Ink 0 : Draw 273,POSIZIONELINEAMAGGIORE To 319,POSIZIONELINEAMAGGIORE
Inc POSIZIONELINEAMAGGIORE
Wait 5
End If
Else
If POSIZIONELINEAMINORE<255 and POSIZIONELINEAMINORE<POSIZIONELINEAMAGGIORE-1
Ink 0 : Draw 273,POSIZIONELINEAMINORE To 319,POSIZIONELINEAMINORE
Inc POSIZIONELINEAMINORE
Wait 5
End If
End If
Proc MOSTRALEZONE
Proc MOSTRALALINEAATTIVA
Else If ZONATOPO=264
Exit
End If
End If
Loop
Rainbow Del 0 : Screen Close 0 : Erase All : End
Procedure CALCOLALARAGIONEDELROSSODELVERDEEDELBLU
ROSSOLINEAMAGGIORE=C0LORELINEAMAGGIORE/256
ROSSOLINEAMINORE=C0LORELINEAMINORE/256
RAGIONEDELROSSO#=(ROSSOLINEAMAGGIORE-ROSSOLINEAMINORE)/(LINEE-1.0)
VERDELINEAMAGGIORE=C0LORELINEAMAGGIORE/16 mod 16
VERDELINEAMINORE=C0LORELINEAMINORE/16 mod 16
RAGIONEDELVERDE#=(VERDELINEAMAGGIORE-VERDELINEAMINORE)/(LINEE-1.0)
BLULINEAMAGGIORE=C0LORELINEAMAGGIORE mod 16
BLULINEAMINORE=C0LORELINEAMINORE mod 16
RAGIONEDELBLU#=(BLULINEAMAGGIORE-BLULINEAMINORE)/(LINEE-1.0)
End Proc
Procedure CARICAGLIOGGETTI
Load PERCORSODEGLIOGGETTI$+OGGETTI$
End Proc
Procedure CARICAILLIVELLO
Erase BANCO
Print At(0,29);"Insert game disk (y/n)";
RISPOSTA$=Lower$(Input$(1))
Print At(0,29);Space$(28);
If RISPOSTA$="n" Then Pop Proc
LIVELLO$="Livello"+Str$(LIVELLO)-" "
FILE$=PERCORSODEILIVELLIDELDISCODELGIOCO$+LIVELLO$
If Exist(FILE$)
Open In 1,FILE$
MARCATORE$=Input$(1,9)
LUNGHEZZABANCO=Lof(1)
Close 1
If MARCATORE$="Mattonite"
Reserve As Work BANCO,LUNGHEZZABANCO
Bload FILE$,Start(BANCO)
End If
End If
End Proc
Procedure DABANCOAVARIABILI
If Length(BANCO)>0
INDIRIZZO=Start(BANCO)+9
For A=0 To 246
MATTONCINO(A)=Peek(INDIRIZZO)
Inc INDIRIZZO
Next A
For A=0 To 255
ARCOBALENO=Peek(INDIRIZZO)
Inc INDIRIZZO
ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
Rain(0,A)=ARCOBALENO
Inc INDIRIZZO
Next A
BONUS=Peek(INDIRIZZO)
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*100
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*10000
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*1000000
Inc INDIRIZZO
Print At(0,29);
If INDIRIZZO=Start(BANCO)+Length(BANCO)
Print "Level";LIVELLO;" loaded";
Else
Print "Data error";
End If
Else
Print At(0,29);"Level not loaded";
End If
Wait 100
Print At(0,29);Space$(28);
End Proc
Procedure DAVARIABILIABANCO
Reserve As Work BANCO,772
INDIRIZZO=Start(BANCO)
Poke$ INDIRIZZO,"Mattonite"
Add INDIRIZZO,9
For A=0 To 246
Poke INDIRIZZO,MATTONCINO(A)
Inc INDIRIZZO
Next A
For A=0 To 255
ARCOBALENO=Rain(0,A)
Poke INDIRIZZO,ARCOBALENO mod $100
Inc INDIRIZZO
Poke INDIRIZZO,ARCOBALENO/$100
Inc INDIRIZZO
Next A
Poke INDIRIZZO,BONUS mod 100
Inc INDIRIZZO
Poke INDIRIZZO,BONUS/100 mod 100
Inc INDIRIZZO
Poke INDIRIZZO,BONUS/10000 mod 100
Inc INDIRIZZO
Poke INDIRIZZO,BONUS/1000000 mod 100
Inc INDIRIZZO
Print At(0,29);
If INDIRIZZO=Start(BANCO)+Length(BANCO)
Print "Level";LIVELLO;" converted";
CONVERSIONERIUSCITA=True
Else
Print "Data error";
CONVERSIONERIUSCITA=False
End If
Wait 100
Print At(0,29);Space$(28);
End Proc
Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
PERCORSO$=Dir$
End Proc
Procedure IMPOSTAICOLORI
Get Bob Palette
End Proc
Procedure IMPOSTAILAMPEGGI
Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
End Proc
Procedure IMPOSTAIPERCORSIDEIFILE
PERCORSODEGLIOGGETTI$=PERCORSO$+"Grafica/"
PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
PERCORSODEILIVELLIDELDISCODELGIOCO$="Mattonite:Livelli/"
End Proc
Procedure IMPOSTALABARRADISCORRIMENTO
Set Slider 61,61,29,1,63,63,29,1
End Proc
Procedure IMPOSTALARCOBALENO
Set Rainbow 0,0,271,"","","" : Rainbow 0,257,0,271
End Proc
Procedure IMPOSTALEZONEDEIMATTONCINI
Reserve Zone 264
Ink 29 : Polyline 272,0 To 272,208 To 0,208
For M=0 To 246
LINEADIMATTONCINI=M/13
RIGADIMATTONCINI=M mod 13
X0ZONA(M)=RIGADIMATTONCINI*21
Y0ZONA(M)=LINEADIMATTONCINI*11
MATTONCINO(M)=1
If MATTONCINO(M)>0 Then Paste Bob X0ZONA(M),Y0ZONA(M),82+MATTONCINO(M)
Set Zone M+1,X0ZONA(M),Y0ZONA(M) To X0ZONA(M)+20,Y0ZONA(M)+10
Next M
End Proc
Procedure IMPOSTALOSCHERMO
Screen Open 0,320,256,64,Lowres
Curs Off : Flash Off : Pen 29 : Paper 0 : Cls
End Proc
Procedure MOSTRAILBONUS
CIFRA=BONUS/1000000 mod 10
Ink 29,32 : Text 84,216,Str$(CIFRA)-" "
CIFRA=BONUS/100000 mod 10
Ink 29,32 : Text 92,216,Str$(CIFRA)-" "
CIFRA=BONUS/10000 mod 10
Ink 29,32 : Text 100,216,Str$(CIFRA)-" "
CIFRA=BONUS/1000 mod 10
Ink 29,32 : Text 108,216,Str$(CIFRA)-" "
CIFRA=BONUS/100 mod 10
Ink 29,32 : Text 116,216,Str$(CIFRA)-" "
CIFRA=BONUS/10 mod 10
Ink 29,32 : Text 124,216,Str$(CIFRA)-" "
CIFRA=BONUS mod 10
Ink 29,32 : Text 132,216,Str$(CIFRA)-" "
End Proc
Procedure MOSTRAILLIVELLO
CIFRA=LIVELLO/100 mod 10
Ink 29,32 : Text 40,216,Str$(CIFRA)-" "
CIFRA=LIVELLO/10 mod 10
Ink 29,32 : Text 48,216,Str$(CIFRA)-" "
CIFRA=LIVELLO mod 10
Ink 29,32 : Text 56,216,Str$(CIFRA)-" "
End Proc
Procedure MOSTRAIMATTONCINI
For M=0 To 246
If MATTONCINO(M)=0
Ink 0 : Bar X0ZONA(M),Y0ZONA(M) To X0ZONA(M)+19,Y0ZONA(M)+9
Else
Paste Bob X0ZONA(M),Y0ZONA(M),MATTONCINO(M)+82
End If
Next M
End Proc
Procedure MOSTRALALINEAATTIVA
If LINEAMAGGIORE=True
C0LORELINEAMAGGIORE=Rain(0,POSIZIONELINEAMAGGIORE)
Colour 1,C0LORELINEAMAGGIORE
Ink 1 : Bar 264,208 To 272,255
Ink 29 : Box 264,208 To 272,255
ROSSO=C0LORELINEAMAGGIORE/256
VERDE=C0LORELINEAMAGGIORE/16 mod 16
BLU=C0LORELINEAMAGGIORE mod 16
Ink 29 : Draw 272,POSIZIONELINEAMAGGIORE To 281,POSIZIONELINEAMAGGIORE
Ink 32 : Draw 310,POSIZIONELINEAMAGGIORE To 319,POSIZIONELINEAMAGGIORE
Else
C0LORELINEAMINORE=Rain(0,POSIZIONELINEAMINORE)
Colour 1,C0LORELINEAMINORE
Ink 1 : Bar 264,208 To 272,255
Ink 29 : Box 264,208 To 272,255
ROSSO=C0LORELINEAMINORE/256
VERDE=C0LORELINEAMINORE/16 mod 16
BLU=C0LORELINEAMINORE mod 16
Ink 29 : Draw 272,POSIZIONELINEAMINORE To 281,POSIZIONELINEAMINORE
Ink 32 : Draw 310,POSIZIONELINEAMINORE To 319,POSIZIONELINEAMINORE
End If
Hslider 233,209 To 264,223,16,ROSSO,1
Ink 0 : Bar 217,216 To 232,223
ROSSO$=Str$(ROSSO)-" " : Ink 29,32 : Text 233-Len(ROSSO$)*8,222,ROSSO$
Hslider 233,225 To 264,239,16,VERDE,1
Ink 0 : Bar 217,232 To 232,239
VERDE$=Str$(VERDE)-" " : Ink 29,32 : Text 233-Len(VERDE$)*8,238,VERDE$
Hslider 233,241 To 264,255,16,BLU,1
Ink 0 : Bar 217,248 To 232,255
BLU$=Str$(BLU)-" " : Ink 29,32 : Text 233-Len(BLU$)*8,254,BLU$
Locate 10,31
If LINEAMAGGIORE=True Then Print "Major"; Else Print "Minor";
End Proc
Procedure MOSTRALEZONE
Print At(0,30);Space$(28);At(0,30);"Rainbow";Chr$(147);Chr$(148);Chr$(149);Chr$(150)
Print At(0,31);Space$(28);At(0,31);"Load Save line";
End Proc
Procedure PROGRESSIONECOLORI
Shared LINEE,RAGIONEDELROSSO#,RAGIONEDELVERDE#,RAGIONEDELBLU#
Shared ROSSOLINEAMINORE,VERDELINEAMINORE,BLULINEAMINORE
For LINEA=1 To LINEE-2
ROSSO=ROSSOLINEAMINORE+(LINEA)*RAGIONEDELROSSO#
VERDE=VERDELINEAMINORE+(LINEA)*RAGIONEDELVERDE#
BLU=BLULINEAMINORE+(LINEA)*RAGIONEDELBLU#
C0LORE=ROSSO*256+VERDE*16+BLU
Rain(0,POSIZIONELINEAMINORE+LINEA)=C0LORE : Rainbow 0,257,0,271
Bell 96
Next LINEA
End Proc
Procedure SALVAILLIVELLO
If CONVERSIONERIUSCITA=True
LIVELLO$="Livello"+Str$(LIVELLO)-" "
FILE$=PERCORSODEILIVELLIDELDISCODELGIOCO$+LIVELLO$
If Exist(FILE$)
Bsave FILE$,Start(BANCO) To Start(BANCO)+Length(BANCO)
Print At(0,29);"Level";LIVELLO;" saved";
Wait 100
End If
Print At(0,29);"Level backup? (s/n)";
RISPOSTA$=Lower$(Input$(1))
Print At(0,29);Space$(28);
If RISPOSTA$="s"
FILE$=PERCORSODEILIVELLI$+LIVELLO$
Bsave FILE$,Start(BANCO) To Start(BANCO)+Length(BANCO)
Print At(0,29);"Level";LIVELLO;" backed up";
Wait 100
End If
Print At(0,29);Space$(28);
End If
End Proc